home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-08-17 | 27.6 KB | 609 lines | [TEXT/ttxt] |
- Dylan Developments
- The Dylan(tm) Newsletter
- Issue 1 July 29, 1994
-
- We're happy to start this newsletter in order to keep you up to date on
- what's happening with Dylan(tm), the new object-oriented dynamic language.
- We hope to publish about once a month. ASCII copies will be mailed out to
- the announce-dylan mailing list. Fully formatted versions and back issues
- will be available at all the usual Dylan file repositories.
-
- For more information about exactly where the usual Dylan file repositories
- are, as well as pointers to several Dylan-related mailing lists, please see
- the enclosed document, known as the Dylan FAQ (Answers to Frequently Asked
- Questions)
-
- Steve Strassmann, editor
- straz@apple.com
-
- Table of contents:
- What we've been up to lately
- Status of Apple Dylan and other Dylans
- 3 language Q&A's from the info-dylan list
- The Dylan FAQ
-
- What we've been up to lately
-
- The first major public event in Dylan's history was the publication of the
- little grey book in the spring of '92. We kept a relatively low profile
- until this spring at the Apple WWDC (World-Wide Developer's Conference), an
- annual gathering of high-powered Mac developers.
-
- At the WWDC, we gave two 90-minute presentations to standing-room-only
- crowds. The first, given by Dylan Product Manager, Rick Fleischman, Apple
- Cambridge director Carl Schwarcz and Andrew Shalit, was an overview of the
- whole Dylan effort, and the Apple Dylan product in particular. Andrew ran
- the development environment through its paces, showing off the innovative
- browsing and interactive development ideas that make it so special. We also
- annouced the schedule and features for Apple's implementation of Dylan.
-
- The second session, given by Stoney Ballard and Mike Lockwood of the Dylan
- engineering team, provided more depth on the Dylan language, as well as the
- application framework included with Apple Dylan. Stoney and Mike
- alternated giving information about the Dylan language and framework and
- demonstrating them live in the Apple Dylan environment. The highlight of
- the session was when Mike showed a version of the Macintosh Finder written
- in Dylan, and then proceeded to add new features to the running Finder
- during the session.
-
- Videotapes of our sessions at WWDC are available for $30 each from GT
- Recording in Seattle, Washington at (800) 878-2737 or (206) 783-6911.
- Order tapes #57 (Dylan Overview) and #67 (Dylan In-Depth).
-
- Jeremy Jones and Rick Fleischman went up to Ann Arbor, MI for the MacHack
- conference, an insane hackathon whose program starts at midnight and
- continues for 3 days, nonstop (plenty of Jolt available). They did a
- one-hour presentation and demonstrated Dylan informally in the MacHack
- machine room.
-
- Last week, John Hotchkiss and Jeremy Jones gave a Dylan talk at a meeting
- of the BCS (Boston Computer Society) MacTech Group.
-
- Coming up next week (Aug 2-5), it's Macworld Boston! Look for the big tent
- across the street from the World Trade Center, with the Apple Pavilion in
- it. We'll have a full-time Dylan demo station in the Developer Tools area
- throughout the show, and daily presentations in the Developer Tools
- presentation theater.
-
- The Dylan language has been improved and simplified since 1992. We now
- consider it to be pretty stable, except for the specification of macros,
- and the inevitable small changes. In June, we published the Interim
- Reference Manual, which describes almost all of the language as it is
- currently defined, especially the infix (algebraic) syntax. Electronic
- copies are now freely available on the Internet, Applelink, and Compuserve,
- and hopefully more places soon. See the FAQ (enclosed) for details.
-
- We call it the "interim" book because the book isn't quite finished, even
- though most of the language is. We're now working on a more readable and
- more complete Dylan reference book, which should be available sometime in
- early 1995.
-
- Apple Dylan status
-
- Development is well underway on Apple Dylan. Our first product, which
- we're calling "Early Dylan" is scheduled to ship in Q1 (January-March) of
- 1995. It is a full implementation of Dylan including:
- * Dylan compiler and runtime
- * Integrated development environment featuring incremental development and
- advanced configurable browsing and viewing of code
- * Dylan application framework
- * Dylan user-interface builder
- * Cross-language support allowing seamless access to existing C code and APIs
-
- We've already begun limited pre-alpha external seeding of Apple Dylan to
- selected sites. We are planning on expanding the list of external seed
- sites when we reach alpha, currently scheduled for late in Q3
- (July-September), 1994. If you are interested in applying to be an early
- seed site for Apple Dylan, send an e-mail to DYLAN on AppleLink or
- dylan@applelink.apple.com on the Internet with your name, address,
- telephone number, and a brief description of how you intend to use the seed
- software.
-
- We will be continuing to expand seeding through beta and final of Early Dylan.
-
- Status of other Dylan versions
-
- Several groups outside Apple have expressed interest in implementing Dylan,
- and many of these versions are currently available.
-
- Marlais, created by Brent Benson, is a freeware Dylan interpreter written
- in relatively portable C. As of this writing, version 0.4 (by Joe Wilson)
- is available, as is a Macintosh port of version 0.3 (by Patrick Beard).
- These versions still support the lisp-like syntax, but version 0.5 will
- support the official algebraic syntax. All Marlais releases are available
- in the Dylan ftp directory at cambridge.apple.com.
-
- Thomas, created by Jim Miller, Matt Birkholz, and Ron Weiss of DEC
- Cambridge Research Labs, is a freeware Dylan interpreter written in Scheme.
- Version 1.1 supports the lisp-like syntax, but no further updates are
- expected any time soon. It's available from the Dylan ftp directory.
-
- Harlequin is currently investing in a commercial implementation of Dylan.
- They are building a PC based Windows (NT/Chicago) hosted version of the
- language. For further information, write to Mike Smith,
- mikes@harlequin.com.
-
- The Gwydion Project at Carnegie Mellon University is building an innovative
- new software development and maintenance environment around the Dylan
- language. A part of this work will involve the development of a
- high-performance Dylan implementation that will produce code for many
- platforms.
-
- For more information on this project, see the Gwydion project's WorldWide Web
- page: http://legend.gwydion.cs.cmu.edu:8001/gwydion/.
-
- As a development tool, the Gwydion project has produced a byte-coded Dylan
- implementation called "Mindy". Though it is not very fast, does not have
- an extensive environment, and time spent on maintaining it will be limited,
- Mindy may be of some value to people who want to play with Dylan code and
- get a feel for the language. Version 1.0 has been released for general
- use, and the latest information on Mindy is available in the Gwydion web
- page.
-
- Some Q&A's from the info-dylan list
-
- Q. How do I define a variable with a type without initializing it?
- For example,
- let n :: <integer> = 0; // this is fine but
- let n :: <integer>; // this produces an error.
-
- A. Sorry, both let and define variable require an initialization
- value. That's part of the Dylan approach to safety; it would be unsafe to
- let a variable go running loose without a well-defined value. There's no
- concept in Dylan of a variable that "exists, but hasn't been initalized
- yet." There's also no concept of "default value for a type".
-
- Q. Is it possible to override operators like + and = as in C++?
-
- A. Yes, you can write your own methods to specialize '+' and certain
- other built-in functions, as long as they are generic functions. Note that
- to define methods on operators, you need to quote the operator with a \.
- So, for example, in order to add two colors together (whatever that means
- within your application), you'd write something like this:
-
- define method \+ (color1::<rgbcolor>, color2::<rgbcolor>)
- ...
- end method;
-
- Q. I'm looking at a program containing a call to local-bounds(view).
- This looks like a method but it acts like a slot accessor. Which is it?
-
- A. The Dylan language philosophy is that it is none of the caller's
- business whether a function is implemented as a slot or as a method. This
- is different from C or C++ or Pascal, where you have to know which it is.
-
- So local-bounds(view) and view.local-bounds mean exactly the same
- thing; the only reason both constructs exist in Dylan is so programmers
- can develop a style that conveys some extra hint about what they are
- thinking through their choice of parentheses or dot for calling a
- function with one argument.
-
- Similarly, local-bounds(view) := x and view.local-bounds := x mean
- exactly the same thing, a call to local-bounds-setter.
-
-
- Dylan(tm) FAQ
- Apple Computer - July 29, 1994
-
- This memo answers questions which are frequently asked about the Dylan
- programming language, and its implementations. If you want to keep up with
- Dylan news, consider joining the announce-dylan or info-dylan mailing
- lists, or the comp.lang.dylan newsgroup, described below.
-
- The latest version of this memo is available by anonymous ftp from
- cambridge.apple.com: /pub/dylan/faq/ in a variety of formats, including
- plain ASCII, RTF (Rich Text Format), and PostScript(tm).
-
- The topics covered in this FAQ are
- [1] Online Sources of Dylan Information
- [1-1] Where is Dylan information generally available?
- [1-2] Where can I get a copy of the language specification?
- [1-3] Are there any public mailing lists for discussing Dylan?
- [1-4] Where else can I get information about Dylan?
- [1-5] Where should I send comments on the Dylan language?
- [1-6] What should I do if I want to implement Dylan?
- [1-7] Is there a group which promotes the use of object-oriented
- dynamic languages?
-
- [2] General Questions About Dylan and Implementations
- [2-1] What is Dylan?
- [2-2] What is the target audience for Dylan?
- [2-3] How does Dylan differ from previous OODLs?
- [2-4] Does Apple have an implementation of Dylan?
- [2-5] How can I get an early copy of Apple's Dylan implementation?
- [2-6] What third-party implementations of Dylan are available?
- [2-7] Is Dylan related to the Newton PDA?
- [2-8] Is Dylan designed to be a replacement for Common Lisp?
- [2-9] Is Dylan a proprietary language? Why is the Dylan name
- trademarked?
-
- [3] Questions about the Dylan Language Design
- [3-1] Is the Dylan language design frozen?
- [3-2] What does the Dylan syntax look like?
- [3-3] Will Dylan have a standard macro system with the algebraic syntax?
- [3-4] Are there plans to specify a standard I/O package for Dylan?
- What about threads?
- [3-5] Why is 'make' allowed to return a previously allocated instance,
- or an object which is
- an indirect instance of the class passed to make?
- [3-6] The Dylan '92 manual doesn't require implementations to optimize
- tail-recursion. Was
- this an intentional omission, or an editorial oversight?
- [3-7] The Dylan '92 manual doesn't say much about modules. Will this
- be specified in the
- future?
- [3-8] Can the 'method' special form be used to create closures?
- [3-9] I don't understand how setter variables work. Is 'setter' a
- special form?
- [3-10] What kind of object is used to return multiple values?
- [3-11] Is the specification of sealing complete?
- [3-12] Will Dylan include 'eval'?
- [3-13] Will Dylan include an application framework?
- [3-14] Will Dylan interface to other languages?
-
-
- [1] Online Sources of Dylan Information
-
- [1-1] Where is Dylan information generally available?
-
- On the Internet, the Apple Dylan ftp site is cambridge.apple.com:/pub/dylan/.
-
- The Dylan WWW (World-Wide Web) page at Carnegie Mellon University is
- http://legend.gwydion.cs.cmu.edu:8001/dylan/
-
- The Dylan newsgroup is comp.lang.dylan.
-
- On Applelink, Dylan files are regularly uploaded to this area:
- Developer Support:Developer Services:
- Development Platforms:Dylan Related
-
- On CompuServe, Type GO APPLE to get to the Apple support forum.
- There are 16 libraries, go into Programmers/Developers Library #15
-
- [1-2] Where can I get a copy of the language specification?
-
- The first book on the Dylan language was published in 1992. Since then,
- the language has undergone a great deal of change in response to feedback
- from potential users and implementors. Throughout this process, changes to
- the language design have been published electronically in the form of
- design notes. The current round of language design is now essentially
- complete except for the macro system.
-
- A new Dylan language reference will be published in early 1995. This will
- be the definitive specification of the Dylan language. Apple is working
- closely with other Dylan implementors to ensure that this book is not
- Apple-specific, but rather, applies equally to all Dylan implementations.
-
- Of course, we realize that many people want to read about Dylan now! So to
- fill the gap until the new book is published, an interim Dylan reference
- book is available by anonymous ftp, in the directory
- /pub/dylan/dylan-manual/, as well as in the other file areas listed in
- topic [1-1] above. It is available in both RTF (Rich Text Format) and
- PostScript formats (214 pages). The interim book is a combination of the
- original Dylan book, the previously published design notes, and additional
- previously unpublished design decisions. The document is called "interim"
- not because the language design is unfinished, but because this is a very
- rough document intended for use until the new book is ready.
-
- [1-3] Are there any public mailing lists for discussing Dylan?
-
- Yes. The info-dylan mailing list is a forum for discussing all subjects
- related to Dylan. Each day's messages are gathered into a digest and sent
- as a single compound message to the list info-dylan-digest. The mailing
- list is also linked to the Newsgroup comp.lang.dylan.
-
- The announce-dylan mailing list is a moderated list, for major
- announcements about Dylan (such as the availability of new implementations
- of the language). All messages sent to announce-dylan are also sent to
- info-dylan.
-
- To subscribe to info-dylan or announce-dylan, send mail to
- majordomo@cambridge.apple.com. The body of the message should be
- "subscribe <list-name>", where <list-name> is the name of the mailing list
- you want to subscribe to. To unsubscribe to one of the mailing lists, send
- majordomo a message with the body "unsubscribe <list-name>". If you would
- like to subscribe or unsubscribe an address which is different from the
- return address of the message, include the address after the <list-name>.
- For complete majordomo instructions, send a message with the body "help".
-
- The name of the digest form of info-dylan is info-dylan-digest.
-
- Please do not send administrative requests to the mailing lists! If you
- have trouble with info-dylan, send mail to sysadmin@cambridge.apple.com.
-
- [1-4] Where else can I get information about Dylan?
-
- The Gwydion Project at Carnegie Mellon University maintains a World Wide
- Web (WWW) page of general information on Dylan. This is accessible using
- Mosaic or other web-browsing software. This page contains the Interim
- Reference Manual as well as the original Dylan book in on-line form,
- annotated with links to the design notes and changes that have been
- approved. This web page also contains the current FAQ from Apple and other
- general information of interest to the Dylan community.
-
- The URL is "http://legend.gwydion.cs.cmu.edu:8001/dylan/".
-
- The Gwydion Project also intends to maintain an FTP-accessible on-line
- repository of Dylan libraries and code that the authors wish to share with
- the rest of the community. When this is in operation, it will be announced
- on the Dylan mailing lists and will be pointed to from the Dylan WWW page
- mentioned above.
-
- [1-5] Where should I send comments on the Dylan language?
-
- Most comments can be sent to info-dylan. If you wish to send a private
- letter to the Apple engineers working on Dylan, you can send a message to
- dylan-comments
- @cambridge.apple.com. (AppleLink users can send mail to DYLAN).
-
- [1-6] What should I do if I want to implement Dylan?
-
- Send mail to dylan-comments@cambridge.apple.com. We have put together a
- program to support implementors, and we want to hear from you. (AppleLink
- users can send mail to DYLAN).
-
- If you've written an implementation of Dylan and want to release it, please
- contact us for a trademark license.
-
- [1-7] Is there a group which promotes the use of object-oriented dynamic
- languages?
-
- Yes. There is an OODL special interest group of the Software Frameworks
- Association (formerly called MADA). SFA is a group which champions
- object-oriented programming on the Macintosh as well as other platforms.
-
- To subscribe to the OODL sig mailing list from AppleLink send mail to
- OODL.SIG. Internet subscriptions should be requested from
- oodl-sig-request@cambridge.apple.com.
-
-
- [2] General Questions About Dylan and Implementations
-
- [2-1] What is Dylan?
-
- Dylan is a new Object Oriented Dynamic Language (OODL). Dylan combines the
- features of static and dynamic languages. The goal of the language is to
- support a high level of programmer productivity, while still allowing the
- efficient delivery of applications and libraries.
-
- Dylan is consistently object-oriented. It is not based on a particular
- previously-existing procedural language with some kind of object-oriented
- extension.
-
- [2-2] What is the target audience for Dylan?
-
- The target audience for Dylan is developers of commercial application
- software, most of whom are currently using static languages such as C and
- C++. We expect Dylan will appeal to many other groups of programmers as
- well, such as educational users who want a very clean object-oriented
- language design, or in-house developers who need a high-level, very
- productive language.
-
- [2-3] How does Dylan differ from previous OODLs?
-
- Dylan is designed to allow the powerful and flexible programming techniques
- and development environments associated with OODLs, while also allowing the
- small, fast delivered applications currently associated with static
- languages.
-
- Unlike many dynamic languages, Dylan's design consciously enables the
- runtime environment to execute without the development environment present.
- In addition, Dylan will let you selectively 'turn-off' dynamic capabilities
- when they are no longer needed, allowing more efficient compilation.
-
- [2-4] Does Apple have an implementation of Dylan?
-
- Apple recently announced plans to release an implementation of Dylan.
-
- The following description of Apple's implementation was taken from a data
- sheet distributed by Apple.
-
- The Apple Dylan development environment is designed to let you create
- complex, commercial-quality projects with all the advantages of a
- rapid-prototyping environment.
-
- Your project is stored in a database, unlike traditional, file-based
- systems. Apple Dylan's customizable browsers will give you a powerful new
- way to look at and manipulate your application as it executes. You can
- browse class hierarchies graphically, find all references to a given
- routine or variable, and inspect objects in your program while it's
- running.
-
- With Apple Dylan's incremental compiler, you will be able to actually
- change code in a running program and see the results right away. No more
- waiting for a long edit, compile, link, execute, debug cycle. This gives
- you freedom as a programmer to explore various options and rapidly improve
- your product.
-
- Apple Dylan will include:
- * Dylan compiler and runtime
- * Integrated development environment featuring incremental
- development and advanced configurable browsing and viewing of code
- * Dylan application framework
- * Dylan user-interface builder
- * Cross-language support allowing seamless access to existing C and
- C++ code and APIs
-
- The first release of Apple Dylan is scheduled to ship in the first quarter
- of 1995. This release will support native 68K stand alone applications.
-
- Six to nine months after the first release, Apple will release a version of
- Dylan which supports native PowerPC code and OpenDoc parts (components).
-
- [2-5] How can I apply to be an early seed site for Apple's Dylan implementation?
-
- Send a message to the AppleLink address DYLAN, or the Internet address
- dylan@applelink.apple.com. The message should include your name, address,
- phone number, and a brief description of how you plan on using Apple Dylan.
-
- [2-6] What third-party implementations of Dylan are available?
-
- Several third-parties have expressed interest in implementing Dylan.
-
- [a] Marlais is an experimental interpreter written in C. It was created by
- Brent Benson, and is being extended by Joe Wilson, Patrick Beard, and
- others. Marlais 0.4 is available in the Dylan ftp directory at
- cambridge.apple.com. It supports the older lisp-like syntax, and version
- 0.5 (coming soon) is expected to support the official algebraic syntax.
-
- Marlais 0.4 runs on a variety of unix platforms. Marlais 0.3 has been
- ported to the Macintosh, and is available in the Dylan ftp directory as
- MacMarlais 0.31.
-
- [b] Harlequin is currently investing in a commercial implementation of
- Dylan. They are building a PC based Windows (NT/Chicago) hosted version of
- the language. For more information, contact Mike Smith
- (mikes@harlequin.com), group manager of Harlequin's Dylan project.
-
- [c] The Gwydion Project at Carnegie Mellon University is building an
- innovative new software development and maintenance environment around the
- Dylan language. A part of this work will involve the development of a
- high-performance Dylan implementation that will produce code for many
- platforms.
-
- For more information on this project, see the Gwydion project's World Wide
- Web page: "http://legend.gwydion.cs.cmu.edu:8001/gwydion/".
-
- [d] As a development tool, the Gwydion project has produced a byte-coded
- Dylan implementation called "Mindy". Though it is not very fast, does not
- have an extensive environment, and time spent on maintaining it will be
- limited, Mindy may be of some value to people who want to play with Dylan
- code and get a feel for the language. Mindy is documented on the Gwydion
- web page (see above), and is available by anonymous ftp from
- legend.gwydion.cs.cmu.edu in the file:
- /afs/cs.cmu.edu/project/gwydion/release/mindy.tar.gz
- Due to CMU security measures, if you use the ftp 'cd' command, then you
- must 'cd' to the release directory in one cd command line; for example, do
- not try to 'cd' to "/afs/cs/project/gwydion/".
-
- [e] Thomas 1.1 is an experimental interpreter written in Scheme. It was
- created by Matt Birkholz, Jim Miller, and Ron Weiss at the DEC Cambridge
- Research Lab in 1992. It supports the older lisp-like syntax, and does not
- incorporate many of the more recent language changes. Thomas is available
- at the Dylan ftp site at cambridge.apple.com.
-
- [2-7] Is Dylan related to the Newton PDA?
-
- Not at this time. If you are looking for more information on Newton
- development, you need to contact the Newton Developer Relations at
- NEWTON.DEVS@applelink.apple.com.
-
- [2-8] Is Dylan designed to be a replacement for Common Lisp?
-
- No. We see Common Lisp and Dylan filling two distinct needs.
-
- [2-9] Is Dylan a proprietary language? Why is the Dylan name trademarked?
-
- We want Dylan to be available on as many computers as possible. To this
- end, we are encouraging groups outside Apple to implement Dylan.
-
- It is our intention to license the Dylan trademark to any implementation
- which passes a standard test suite. The purpose of the trademark is to
- ensure quality and consistency among implementations.
-
- [3] Questions About the Dylan Language Design
-
- [3-1] Is the Dylan language design frozen?
-
- With the exception of the macro system, the current language design is
- complete. At this time, we will only be making small tweaks, or changes
- necessary to resolve bugs or inconsistencies in the specification.
-
- [3-2] What does the Dylan syntax look like?
-
- The first Dylan book published in 1992 used a parenthesized, lisp-like
- syntax. The current language definition uses an algebraic syntax, which
- will be very familiar to users of Pascal or C.
-
- [3-3] Will Dylan have a standard macro system with the algebraic syntax?
-
- Yes.
-
- [3-4] Are there plans to specify a standard I/O package for Dylan? What
- about threads?
-
- Threads, I/O, and other language features may be provided as optional
- libraries in the future. They are not currently part of the language.
- Because of the great variety of computing platforms-from PDA to
- mainframe-we do not want to standardize on these features too strictly.
-
- [3-5] Why is 'make' allowed to return a previously allocated instance, or
- an object which is an indirect instance of the class passed to make?
-
- We feel that this is a very important abstraction mechanism. A class
- should have flexibility in how it implements make, as long as the object
- returned fulfills the protocol of the class.
-
- For example, this allows a library to document a single abstract class
- which is supported by several undocumented implementation classes. The
- abstract class can choose which implementation class to instantiate based
- on the additional arguments to make. This allows optimizations which are
- transparent to the clients of the library.
-
- The default method for make of a user-defined class returns a fresh direct
- instance of the requested class.
-
- [3-6] The Dylan '92 manual doesn't require implementations to optimize
- tail-recursion. Was this an intentional omission, or an editorial
- oversight?
-
- It was an editorial oversight. Dylan implementations will be required to
- be properly tail recursive.
-
- [3-7] The Dylan '92 manual doesn't say much about modules. Will this be
- specified in the future?
-
- The new language document includes a complete module specification.
-
- [3-8] Can the 'method' special form be used to create closures?
-
- Yes.
-
- [3-9] I don't understand how setter variables work. Is 'setter' a special form?
-
- This has been clarified in the new language design. The new design is
- included in the interim Dylan reference book.
-
- [3-10] What kind of object is used to return multiple values?
-
- When a function returns multiple values, the return values are not stored
- in a wrapper object; they are returned directly. For example, if a
- function returns "the values 4 and 5", it returns two integers. It does
- not return a data structure which contains two integers.
-
- Returning multiple values is similar to calling a function with more than
- one argument. When passing multiple objects as arguments to a function,
- the objects do not have to be stored in a single data structure before they
- are passed.
-
- [3-11] Is the specification of sealing complete?
-
- Yes. The new language design includes a complete specification of sealing.
- This design is included in the interim Dylan reference book.
-
- [3-12] Will Dylan include 'eval'?
-
- Some implementations may choose to support eval, but we do not have plans
- to add it to the language standard. We feel that the delivery of
- applications which are space efficient requires the separation of
- development time activity from runtime activity.
-
- [3-13] Will Dylan include an application framework?
-
- We recognize the value of application frameworks, especially cross-platform
- application frameworks. Unfortunately, because of the great variation in
- computing platforms, a single application framework will not be part of the
- Dylan language. On each platform, there should either be a Dylan-specific
- application framework, or Dylan should be able to use application
- frameworks written in other languages.
-
- [3-14] Will Dylan interface to other languages?
-
- We recognize that seamless integration with other languages, especially C
- and C++, is essential. We are working on addressing this issue. The
- solutions may not be part of the Dylan language proper.
-
-
-
-
-